SHELL=/bin/bash

all:so
a:
	gcc -Wall -fPIC -c hiseg.c segger.c datrie.c charset.c slab.c scache.c vla.c mylog.c
	ar cr libhiseg.a hiseg.o segger.o datrie.o charset.o slab.o scache.o vla.o mylog.o
so:
	echo -e "#ifdef __cplusplus\nextern \"C\" { \n#endif\n" > libhiseg.h
	echo -e "#include <stdio.h>" >> libhiseg.h
	cat mylog.h charset.h vla.h list.h datrie.h scache.h slab.h segger.h hiseg.h |grep -v '#include' >> libhiseg.h
	echo -e "\n#ifdef __cplusplus\n}\n#endif" >> libhiseg.h
	gcc -O2 -Wall -fPIC -c hiseg.c segger.c datrie.c charset.c slab.c scache.c vla.c mylog.c -DNDEBUG
	gcc -shared -Wl,-soname,libhiseg.so -o libhiseg.so hiseg.o segger.o datrie.o charset.o slab.o scache.o vla.o mylog.o -lm
main:segment.c segger.c charset.c slab.c scache.c vla.c datrie.c
	gcc -ggdb -Wall -o segment segment.c segger.c datrie.c charset.c slab.c scache.c vla.c mylog.c -lm 
#	gcc -O2 -Wall -o segment segment.c segger.c datrie.c charset.c slab.c scache.c vla.c mylog.c -lm -DNDEBUG
hiseg:hiseg.c segger.c charset.c slab.c scache.c vla.c
	gcc -ggdb -o hiseg hiseg.c segger.c datrie.c charset.c slab.c scache.c vla.c mylog.c -Wall -lm -DHISEG_MAIN
segger:segger.c charset.c slab.c scache.c vla.c
	gcc -ggdb -o seg segger.c datrie.c charset.c slab.c scache.c vla.c mylog.c -Wall -lm -DSEGGER_MAIN
dat:datrie.c mylog.c
	gcc -ggdb -o datrie datrie.c mylog.c -Wall -DDATRIE_MAIN
slab:slab.c scache.c vla.c
	gcc -ggdb -o slab slab.c scache.c vla.c mylog.c -Wall -DSLAB_MAIN
scache:scache.c vla.c
	gcc -ggdb -o scache scache.c vla.c mylog.c -Wall -DSCACHE_MAIN
vla:vla.c
	gcc -ggdb -o vla vla.c mylog.c -Wall -DVLA_MAIN
charset:charset.c
	gcc -ggdb -o charset charset.c -Wall -DCHARSET_MAIN
r:
	./segment -f file.txt -d ../dict/hidict.dat
#	gprof segment > gmon.txt
rn:
	./segment -f ../data/src/file.txt -d ../dict/hidict.dat -N
#	gprof segment > gmonN.txt
g:
	cd ../dict/; ./mergedict.sh
	./segment -u ../dict/hidict.utf8 -d ../dict/hidict.dat
rhiseg:
	./hiseg
rsegger:
	./seg
rdat:
	./datrie
rslab:
	./slab
rscache:
	./scache
rvla:
	./vla
rcharset:
	./charset
gdb:
	gdb --args ./segment -f file.txt -d ../dict/hidict.dat
install:
	cp libhiseg.so /usr/local/lib/ 
	cp libhiseg.h /usr/local/include/
clean:
	-@rm *.o
	-@rm libhiseg.so
	-@rm libhiseg.h
	-@rm segment
